/** 
 *  以前在 js 里面，所有的 引用 都 Object 类型
 *      new Object()
 *      {}
*/

// 但是在ts里面如果直接使用 {} / new Object()
// let obja = {}
// obja.name = '狗蛋'; // 引用类型，在ts里面约束尤其严格
// Date 对象有 Date 对象的属性和方法
// Math 对象 有 Math对象的属性和方法
// 两者 都 对象 ，但是不能混为一谈， 他们两种对象的属性和方法是完全不一样的，如果不区分，就没法推导 对象身上的成员

// 在ts里面，每种对象都是一个类型，每种对象才能进行类型推导和类型约束
// 有三个方式可以进行类型的约束
// 1. 字面量  -> 直接使用 {属性名:类型}
// var person1:{name:string};
// var person2:{name:string} ;

// 补充 另外的字面量进行类型约束
// 比如想定义一个人类的性别
var p1 : {name:string,gender:"男" | "女"};
p1 = {
    name:"狗蛋",
    gender : "女"
}